home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibcalc.arc / MATHROUT.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-03-09  |  4.0 KB  |  112 lines

  1. (*--------------------------------------------------------------------------*)
  2. (*                 MATHROUT.PAS --- Mathematical Routines                   *)
  3. (*--------------------------------------------------------------------------*)
  4. (*                                                                          *)
  5. (*     Routines included:                                                   *)
  6. (*                                                                          *)
  7. (*        Log10    -- Base 10 logarithm                                     *)
  8. (*        Log      -- General base logarithm                                *)
  9. (*        Arcsin   -- Inverse sin                                           *)
  10. (*        ArcCos   -- Inverse cosine                                        *)
  11. (*        ArcTan2  -- Inverse tangent                                       *)
  12. (*        PowerI   -- Raise real to integer power                           *)
  13. (*        Power    -- Raise real to real power                              *)
  14. (*                                                                          *)
  15. (*--------------------------------------------------------------------------*)
  16.  
  17. (*--------------------------------------------------------------------------*)
  18. (*                     Log10 -- Base 10 logarithm                           *)
  19. (*--------------------------------------------------------------------------*)
  20.  
  21. FUNCTION Log10( x: REAL ) : REAL;
  22.  
  23. BEGIN (* Log10 *)
  24.    Log10 := LN( x ) * LN( 10.0 );
  25. END   (* Log10 *);
  26.  
  27. (*--------------------------------------------------------------------------*)
  28. (*                     Log -- General base logarithm                        *)
  29. (*--------------------------------------------------------------------------*)
  30.  
  31. FUNCTION Log( x: REAL; y: REAL ) : REAL;
  32.  
  33. BEGIN (* Log *)
  34.    Log := LN( x ) * LN( y );
  35. END   (* Log *);
  36.  
  37. (*--------------------------------------------------------------------------*)
  38. (*                       ArcSin -- Inverse sine                             *)
  39. (*--------------------------------------------------------------------------*)
  40.  
  41. FUNCTION ArcSin( x: REAL ) : REAL;
  42.  
  43. VAR
  44.    AbsX:  REAL;
  45.  
  46. BEGIN (* ArcSin *)
  47.  
  48.    AbsX := ABS( x );
  49.  
  50.    IF AbsX = 1.0 THEN
  51.        IF x < 0.0 THEN
  52.           ArcSin :=  ( -Pi / 2.0 )
  53.        ELSE
  54.           ArcSin := Pi / 2.0
  55.    ELSE ArcSin := ArcTan( x / SQRT( 1.0 - X * X ) );
  56.  
  57. END   (* ArcSin *);
  58.  
  59. (*--------------------------------------------------------------------------*)
  60. (*                       ArcCos -- Inverse cosine                           *)
  61. (*--------------------------------------------------------------------------*)
  62.  
  63. FUNCTION ArcCos( x: REAL ) : REAL;
  64.  
  65. BEGIN (* ArcCos *)
  66.    ArcCos := PI / 2.0 - ArcSin( x );
  67. END   (* ArcCos *);
  68.  
  69. (*--------------------------------------------------------------------------*)
  70. (*                       ArcTan2 -- Inverse tangent (two args)              *)
  71. (*--------------------------------------------------------------------------*)
  72.  
  73. FUNCTION ArcTan2( x: REAL; y: REAL ) : REAL;
  74.  
  75. VAR
  76.    R: REAL;
  77.  
  78. BEGIN (* ArcTan2 *)
  79.  
  80.    R := ARCTAN( x / y );
  81.  
  82.    IF y < 0.0 THEN
  83.       IF R < 0.0 THEN
  84.          R := R + PI
  85.       ELSE
  86.          R := R - PI;
  87.  
  88.    ArcTan2 := R;
  89.  
  90. END   (* ArcTan2 *);
  91.  
  92. (*--------------------------------------------------------------------------*)
  93. (*                     PowerI -- raise real to integer power                *)
  94. (*--------------------------------------------------------------------------*)
  95.  
  96. FUNCTION PowerI( x: REAL; i: INTEGER ) : REAL;
  97.  
  98. BEGIN (* PowerI *)
  99.    PowerI := EXP( i * LN( x ) );
  100. END   (* PowerI *);
  101.  
  102.  
  103. (*--------------------------------------------------------------------------*)
  104. (*                       Power -- raise real to real power                  *)
  105. (*--------------------------------------------------------------------------*)
  106.  
  107. FUNCTION Power( x: REAL; y: REAL ) : REAL;
  108.  
  109. BEGIN (* Power *)
  110.    power := EXP( y * LN( x ) );
  111. END   (* Power *);
  112.